﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados;

namespace Negocios
{
    public class Imagem
    {
        private int cod;

        public int Cod
        {
            get { return cod; }
            set { cod = value; }
        }
        private string nome;

        public string Nome
        {
            get { return nome; }
            set 
            {
                if (value.Length == 0)

                   throw new Exception("O nome deverá ser informado.");

                if (value.Length > 40)
                
                    throw new Exception("Tamanho do campo inválido - nome 40 ");
               else 
                    nome = value; 
            }
        }
        private string localizacao;

        public string Localizacao
        {
            get { return localizacao; }
            set 
            {
                if (value.Length > 50)
                {
                    throw new Exception("Tamanho do campo inválido - localizacao");
                }
                localizacao = value; 
            }
        }
        private Evento evento;

        public Evento Evento
        {
            get { return evento; }
            set 
            {
                if (value.Codigo == 0)
                {
                    throw new Exception("O evento deve ser informado.");
                }
                else if ((new EventoBLL()).Consultar(value.Codigo) == null)
                    throw new SystemException("Evento desconhecido.");
                evento = value; 
            }
        }
        private Autor autor;

        public Autor Autor
        {
            get { return autor; }
            set 
            {
                if (value.Codigo == 0){
                    throw new Exception("Autor deverá ser informado");
                }
                else if ((new AutorBLL()).Consulta(value.Codigo) == null)
                    throw new SystemException("Autor desconhecido.");
                else
                    autor = value;
            }
        }
        private Formato formato;

        public Formato Formato
        {
            get { return formato; }
            set 
            {
                if (value.Codigo == 0)
                {
                    throw new Exception("O formato deve ser informado.");
                }else if ((new FormatoBLL()).Consulta(value.Codigo) == null)
                    throw new SystemException("Formato desconhecido.");
                else
                    formato = value; 
            }
        }
        private Especificacao especificacao;

        public Especificacao Especificacao
        {
            get { return especificacao; }
            set 
            {
                if (value.Codigo == 0)
                {
                    throw new Exception("A especificação deve ser informado.");
                }
                else if ((new EspecificacaoBLL()).Consultar(value.Codigo) == null)
                    throw new SystemException("Especificação desconhecida.");
                especificacao = value; 
            }
        }
        private SoftwareDeReproducao software;

        public SoftwareDeReproducao Software
        {
            get { return software; }
            set 
            {
                if (value.Codigo == 0)
                {
                    throw new Exception("O software deve ser informado.");
                }
                else if ((new Software_De_ReproducaoBLL()).Consulta(value.Codigo) == null)
                    throw new SystemException("Software desconhecido.");
                software = value; 
            }
        }

        private Usuario usuario;

        public Usuario Usuario
        {
            get { return usuario; }
            set {usuario = value; }
        }

        public Imagem(int codigo, string nome, string localizacao,Evento evento, Autor autor, Formato formato, Especificacao especificacao,SoftwareDeReproducao software, Usuario u)
        {
            this.Cod = codigo;
            this.Nome = nome;
            this.Localizacao = localizacao;
            this.Evento = evento;
            this.Autor = autor;
            this.Formato = formato;
            this.Especificacao = especificacao;
            this.Software = software;
            this.Usuario = u;
        }
        public Imagem(int codigo)
        {
            this.Cod = codigo;
        }

        public Imagem( string nome, string localizacao,Evento evento, Autor autor, Formato formato, Especificacao especificacao,SoftwareDeReproducao software, Usuario u)
        {
            this.Nome = nome;
            this.Localizacao = localizacao;
            this.Evento = evento;
            this.Autor = autor;
            this.Formato = formato;
            this.Especificacao = especificacao;
            this.Software = software;
            this.Usuario = u;
        }
        public override string ToString()
        {
            if (this.Nome == null) return "";
            else return this.Nome;
        }

    }
}
